/*
GROUP_CONCAT string aggregate for SQL Server - https://groupconcat.codeplex.com
Copyright (C) 2011  Orlando Colamatteo

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or 
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

See http://www.gnu.org/licenses/ for a copy of the GNU General Public 
License.
*/

/*
Deployment script for GroupConcatTest
*/

GO
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER ON;
SET CONCAT_NULL_YIELDS_NULL, NUMERIC_ROUNDABORT OFF;
GO
USE GroupConcatTest
GO
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors
GO
CREATE TABLE #tmpErrors (Error int)
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
GO
BEGIN TRANSACTION
GO
PRINT N'Creating [GroupConcat]...';


GO
CREATE ASSEMBLY [GroupConcat]
    AUTHORIZATION [dbo]
    FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010300E332B44D0000000000000000E00002210B010800001E000000080000000000002E3D0000002000000040000000004000002000000002000004000000000000000400000000000000008000000002000000000000030040850000100000100000000010000010000000000000100000000000000000000000D43C000057000000004000003804000000000000000000000000000000000000006000000C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000341D000000200000001E000000020000000000000000000000000000200000602E7273726300000038040000004000000006000000200000000000000000000000000000400000402E72656C6F6300000C0000000060000000020000002600000000000000000000000000004000004200000000000000000000000000000000103D0000000000004800000002000500DC2C0000F80F0000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072027B020000042D13020F01FE16040000016F1100000A7D020000042A4E02731200000A7D0100000402147D020000042A000000133004004F000000010000110F01281300000A2D3E0F01281400000A0A027B01000004066F1500000A2C1B027B01000004250B06250C07086F1600000A17586F1700000A2B0D027B0100000406176F1800000A020428010000062A001B30040071000000020000110F017B010000046F1900000A0C2B481202281A00000A0A1200281B00000A0B027B01000004076F1500000A2C1D027B01000004250D072513040911046F1600000A17586F1700000A2B0D027B0100000407176F1800000A1202281C00000A2DAFDE0E1202FE160200001B6F1D00000ADC2A0000000110000002000D005562000E000000001B3004009D00000003000011027B010000046F1E00000A163E85000000731F00000A0A027B010000046F1900000A13042B3B1204281A00000A0B1201281B00000A26160C2B1D061201281B00000A027B02000004282000000A6F2100000A260817580C081201282200000A32D91204281C00000A2DBCDE0E1204FE160200001B6F1D00000ADC066F1100000A0D0916096F2300000A17596F2400000A732500000A2A14282600000A2A0000000110000002002400486C000E00000000133003004500000004000011036F2700000A0A0206732800000A7D01000004160B2B1B027B01000004036F2900000A036F2700000A6F1800000A0717580B0706175931DF02036F2900000A7D020000042A0000001B300200670000000500001103027B010000046F1E00000A6F2A00000A027B010000046F1900000A0B2B221201281A00000A0A031200281B00000A6F2B00000A031200282200000A6F2A00000A1201281C00000A2DD5DE0E1201FE160200001B6F1D00000ADC03027B020000046F2B00000A2A000110000002001D002F4C000E00000000133002004D00000006000011027B040000042D440F01FE16040000016F1100000A6F2C00000A6F2D00000A0A067201000070282E00000A2C18067209000070282E00000A2C0B7213000070732F00000A7A02067D040000042A4E02731200000A7D0300000402147D040000042A000000133004004F000000010000110F01281300000A2D3E0F01281400000A0A027B03000004066F1500000A2C1B027B03000004250B06250C07086F1600000A17586F1700000A2B0D027B0300000406176F1800000A020428080000062A001B30040071000000020000110F017B030000046F1900000A0C2B481202281A00000A0A1200281B00000A0B027B03000004076F1500000A2C1D027B03000004250D072513040911046F1600000A17586F1700000A2B0D027B0300000407176F1800000A1202281C00000A2DAFDE0E1202FE160200001B6F1D00000ADC2A0000000110000002000D005562000E000000001B3003003D01000007000011027B03000004392B010000027B030000046F1E00000A163E1A010000731F00000A0A027B03000004733000000A0C027B040000047209000070282E00000A2D7A086F3100000A17590D2B4D0809280100002B13091209281B00000A13041613052B190611047261000070282000000A6F2100000A261105175813051105027B0300000409280100002B130A120A282200000A32CE0917590D09162FAF066F1100000A0B07076F2300000A1759176F3300000A0B07732500000A2A086F3400000A130B2B3B120B283500000A13061206281B00000A13071613082B190611077261000070282000000A6F2100000A2611081758130811081206282200000A32DC120B283600000A2DBCDE0E120BFE160500001B6F1D00000ADC066F1100000A0B07076F2300000A1759176F3300000A0B07732500000A2A14282600000A2A000000011000000200C200480A010E00000000133003004500000004000011036F2700000A0A0206732800000A7D03000004160B2B1B027B03000004036F2900000A036F2700000A6F1800000A0717580B0706175931DF02036F2900000A7D040000042A0000001B300200670000000500001103027B030000046F1E00000A6F2A00000A027B030000046F1900000A0B2B221201281A00000A0A031200281B00000A6F2B00000A031200282200000A6F2A00000A1201281C00000A2DD5DE0E1201FE160200001B6F1D00000ADC03027B040000046F2B00000A2A000110000002001D002F4C000E000000003202731200000A7D050000042A0000001330040047000000010000110F01281300000A2D3D0F01281400000A0A027B05000004066F1500000A2C1A027B05000004250B06250C07086F1600000A17586F1700000A2A027B0500000406176F1800000A2A001B30040071000000020000110F017B050000046F1900000A0C2B481202281A00000A0A1200281B00000A0B027B05000004076F1500000A2C1D027B05000004250D072513040911046F1600000A17586F1700000A2B0D027B0500000407176F1800000A1202281C00000A2DAFDE0E1202FE160200001B6F1D00000ADC2A0000000110000002000D005562000E000000001B3004009C00000003000011027B050000046F1E00000A163E84000000731F00000A0A027B050000046F1900000A13042B3A1204281A00000A0B1201281B00000A26160C2B1C061201281B00000A7261000070282000000A6F2100000A260817580C081201282200000A32DA1204281C00000A2DBDDE0E1204FE160200001B6F1D00000ADC066F1100000A0D0916096F2300000A17596F2400000A732500000A2A14282600000A2A0110000002002400476B000E00000000133003003900000004000011036F2700000A0A0206732800000A7D05000004160B2B1B027B05000004036F2900000A036F2700000A6F1800000A0717580B0706175931DF2A0000001B3002005B0000000500001103027B050000046F1E00000A6F2A00000A027B050000046F1900000A0B2B221201281A00000A0A031200281B00000A6F2B00000A031200282200000A6F2A00000A1201281C00000A2DD5DE0E1201FE160200001B6F1D00000ADC2A000110000002001D002F4C000E0000000072027B070000042D13020F01FE16040000016F1100000A7D070000042A000000133002004D00000006000011027B080000042D440F01FE16040000016F1100000A6F2C00000A6F2D00000A0A067201000070282E00000A2C18067209000070282E00000A2C0B7213000070732F00000A7A02067D080000042A6A02731200000A7D0600000402147D0700000402147D080000042A1330040056000000010000110F01281300000A2D3E0F01281400000A0A027B06000004066F1500000A2C1B027B06000004250B06250C07086F1600000A17586F1700000A2B0D027B0600000406176F1800000A02042815000006020528160000062A00001B30040071000000020000110F017B060000046F1900000A0C2B481202281A00000A0A1200281B00000A0B027B06000004076F1500000A2C1D027B06000004250D072513040911046F1600000A17586F1700000A2B0D027B0600000407176F1800000A1202281C00000A2DAFDE0E1202FE160200001B6F1D00000ADC2A0000000110000002000D005562000E000000001B3003004701000007000011027B060000043935010000027B060000046F1E00000A163E24010000731F00000A0A027B06000004733000000A0C027B080000047209000070282E00000A3A80000000086F3100000A17590D2B53027B0600000409280100002B13091209281B00000A13041613052B1A061104027B07000004282000000A6F2100000A261105175813051105027B0600000409280100002B130A120A282200000A32CD0917590D09162FA9066F1100000A0B07076F2300000A1759176F3300000A0B07732500000A2A086F3400000A130B2B3C120B283500000A13061206281B00000A13071613082B1A061107027B07000004282000000A6F2100000A2611081758130811081206282200000A32DB120B283600000A2DBBDE0E120BFE160500001B6F1D00000ADC066F1100000A0B07076F2300000A1759176F3300000A0B07732500000A2A14282600000A2A00011000000200CB004914010E00000000133003005100000004000011036F2700000A0A0206732800000A7D06000004160B2B1B027B06000004036F2900000A036F2700000A6F1800000A0717580B0706175931DF02036F2900000A7D0700000402036F2900000A7D080000042A0000001B300200730000000500001103027B060000046F1E00000A6F2A00000A027B060000046F1900000A0B2B221201281A00000A0A031200281B00000A6F2B00000A031200282200000A6F2A00000A1201281C00000A2DD5DE0E1201FE160200001B6F1D00000ADC03027B070000046F2B00000A03027B080000046F2B00000A2A000110000002001D002F4C000E0000000042534A4201000100000000000C00000076322E302E35303732370000000005006C00000094060000237E0000000700005005000023537472696E677300000000500C00006800000023555300B80C0000100000002347554944000000C80C00003003000023426C6F6200000000000000020000015717A2090908000000FA253300160000010000002400000005000000080000001C0000001C00000004000000360000001A000000070000000300000004000000040000000500000001000000040000000100000000000A00010000000000060071006A000A00A20087000600CE00B3000A000101EC000600430139010600550139010A00970187000600E001CE010600F701CE0106001402CE0106003302CE0106004C02CE0106006502CE0106008002CE0106009B02CE010600D302B4020600E702CE0106002003000306004003000306005E036A000A00740387000A009503870006009C03B4020600B203B4020600BD036A000F000404000006001D04B300060049046A00060073046704060081046A000600E1046A000E00EB04B3000600FE04B30012002405180506002F05B3008300040400000000000001000000000001000100092110001A00290005000100010009211000350029000500030008000921100044002900050005000F0009211000510029000500060015000100DB000A000100E20012000100DB000A000100720112000100DB000A000100DB000A000100E200120001007201120050200000000081080B01150001006D2000000000860019011B00020084200000000086001E011F000200E02000000000860029012700040070210000000086002F012D0005002C2200000000E601500132000600802200000000E60162013800070004230000000081087901150008005D2300000000860019011B00090074230000000086001E011F000900D023000000008600290143000B0060240000000086002F012D000C00BC2500000000E601500132000D00102600000000E601620138000E00942600000000860019011B000F00A4260000000086001E0115000F00F82600000000860029014900100088270000000086002F012D001100402800000000E601500132001200882800000000E60162013800130000290000000081080B01150014002029000000008108790115001500792900000000860019011B00160094290000000086001E014F001600F829000000008600290159001900882A0000000086002F012D001A00EC2B00000000E601500132001B004C2C00000000E601620138001C00000001008B0100000100910100000200AF0100000100B90100000000000000000100BF0100000100C101000001008B0100000100910100000200C30100000100B90100000000000000000100BF0100000100C10100000100910100000100B90100000000000000000100BF0100000100C101000001008B01000001008B0100000100910100000200AF0100000300C30100000100B90100000000000000000100BF0100000100C101020009000300090004000900050009003900A9011B004100A901AB004900A901AB005100A901AB005900A901AB006100A901AB006900A901AB007100A901AB007900A901AB008100A901B0008900A901AB009100A901B5009900A9011B00A100A9011B00A900A901BA00B900A9013301C900C40339010C00A9011B002100CD0344012100D80339010C00E20348010C00EE034E010C00F70355010C00000455010C000F04680114002C047A011C0038048C01140040044401E10055041B000C005D04A801E900A9011B00F1008804AC01E9008F04B2011C00D803B801F1009604A801F100A104BD012100A901AB002100AB04C3012900B704A8010C00A901B5002900C104390131006201B50031006201AB00F100CC043901F100D1043901F100D904F001F900A901AB002400A901020224005D04A80111013D050F02F1004705BD0124000F0426022C002C047A012C00400444012E006B000E032E00130065022E001B0076022E002300E7022E002B00E7022E00330065022E003B00ED022E004300E7022E005300E7022E006300050343007B00C00044000B005F0063007B00C00064000B00720083007B00C000A3007B00C000A4000B00850024010B005F0044010B00980084010B008500E4010B005F0024020B008500C4020B005F00E4020B00720004030B00980044030B0085005D019101C901DC01E101F6013A02020001000300020005000300000068013E00000084013E00000068013E00000084013E000100010003000100080005000100150007000100160009003D0173018501FA01320204800000010000002310393400000000000029000000020000000000000000000000010061000000000002000000000000000000000001007B000000000002000000000000000000000001006A000000000003000500000000000000000001000C050000000065001D020000003C4D6F64756C653E0047726F7570436F6E6361742E646C6C0047524F55505F434F4E4341545F440047726F7570436F6E6361740047524F55505F434F4E4341545F530047524F55505F434F4E4341540047524F55505F434F4E4341545F4453006D73636F726C69620053797374656D0056616C7565547970650053797374656D2E44617461004D6963726F736F66742E53716C5365727665722E536572766572004942696E61727953657269616C697A650053797374656D2E436F6C6C656374696F6E732E47656E657269630044696374696F6E61727960320076616C7565730064656C696D697465720053797374656D2E446174612E53716C54797065730053716C537472696E67007365745F44656C696D6974657200496E697400416363756D756C617465004D65726765005465726D696E6174650053797374656D2E494F0042696E61727952656164657200526561640042696E6172795772697465720057726974650044656C696D6974657200736F72744279007365745F536F7274427900536F727442790076616C75650056414C55450053716C4661636574417474726962757465002E63746F720044454C494D495445520047726F75700072007700534F52545F4F524445520053797374656D2E5265666C656374696F6E00417373656D626C795469746C6541747472696275746500417373656D626C794465736372697074696F6E41747472696275746500417373656D626C79436F6E66696775726174696F6E41747472696275746500417373656D626C79436F6D70616E7941747472696275746500417373656D626C7950726F6475637441747472696275746500417373656D626C79436F7079726967687441747472696275746500417373656D626C7954726164656D61726B41747472696275746500417373656D626C7943756C747572654174747269627574650053797374656D2E52756E74696D652E496E7465726F70536572766963657300436F6D56697369626C6541747472696275746500417373656D626C7956657273696F6E4174747269627574650053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C6974794174747269627574650053657269616C697A61626C654174747269627574650053716C55736572446566696E656441676772656761746541747472696275746500466F726D6174005374727563744C61796F7574417474726962757465004C61796F75744B696E64004F626A65637400546F537472696E67006765745F49734E756C6C006765745F56616C756500436F6E7461696E734B6579006765745F4974656D007365745F4974656D0041646400456E756D657261746F7200476574456E756D657261746F72004B657956616C7565506169726032006765745F43757272656E74006765745F4B6579004D6F76654E6578740049446973706F7361626C6500446973706F7365006765745F436F756E740053797374656D2E5465787400537472696E674275696C64657200537472696E6700436F6E63617400417070656E64006765745F4C656E67746800537562737472696E67006F705F496D706C696369740052656164496E7433320052656164537472696E67005472696D00546F4C6F77657200436F6D7061726500457863657074696F6E00536F7274656444696374696F6E6172796032004944696374696F6E61727960320053797374656D2E436F72650053797374656D2E4C696E7100456E756D657261626C650049456E756D657261626C65603100456C656D656E7441740052656D6F7665000000000761007300630000096400650073006300004D49006E00760061006C0069006400200053006F0072007400420079002000760061006C00750065003A002000750073006500200041005300430020006F007200200044004500530043002E0000032C0000000000D10426F58C11DB4BBA2A5D0114100E400008B77A5C561934E089070615120D020E0802060E0520010111110320000107200201111111110520010111080420001111052001011215052001011219042800111105200101110C0520010111100920030111111111111105200101111412010001005408074D617853697A65A00F000012010001005408074D617853697A650100000012010001005408074D617853697A65FFFFFFFF12010001005408074D617853697A6504000000042001010E0420010102042001010805200101115972010002000000050054080B4D61784279746553697A65FFFFFFFF5402124973496E76617269616E74546F4E756C6C73015402174973496E76617269616E74546F4475706C696361746573005402124973496E76617269616E74546F4F726465720154020D49734E756C6C4966456D707479010520010111610320000E0615120D020E08032000020520010213000620011301130007200201130013010A07030E15120D020E080E0A2000151169021300130106151169020E080A200015116D02130013010615116D020E08042000130016070515116D020E080E151169020E0815120D020E080E032000080500020E0E0E05200112750E04200013010520020E080805000111110E120705127515116D020E08080E151169020E0804070208080E070215116D020E08151169020E08050002080E0E0307010E0715128081020E080C2001011512808502130013010D1001021E001512808D011E0008080A0115116D020E080B20001511809102130013010715118091020E082A070C12750E15128081020E08080E0815116D020E080E0815116D020E0815116D020E0815118091020E081001000B47726F7570436F6E63617400007001006B537472696E6720636F6E636174656E6174696F6E2061676772656761746520666F722053514C205365727665722E2044726F702D696E207265706C6163656D656E7420666F72206275696C742D696E204D7953514C2047524F55505F434F4E4341542066756E74696F6E2E000005010000000017010012436F7079726967687420C2A920203230313100000801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F777301000000FC3C000000000000000000001E3D0000002000000000000000000000000000000000000000000000103D00000000000000000000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF250020400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000001800008000000000000000000000000000000100010000003000008000000000000000000000000000000100000000004800000058400000E00300000000000000000000E00334000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000001003934231000000100393423103F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B00440030000010053007400720069006E006700460069006C00650049006E0066006F0000001C0300000100300030003000300030003400620030000000F0006C00010043006F006D006D0065006E0074007300000053007400720069006E006700200063006F006E0063006100740065006E006100740069006F006E002000610067006700720065006700610074006500200066006F0072002000530051004C0020005300650072007600650072002E002000440072006F0070002D0069006E0020007200650070006C006100630065006D0065006E007400200066006F00720020006200750069006C0074002D0069006E0020004D007900530051004C002000470052004F00550050005F0043004F004E004300410054002000660075006E00740069006F006E002E00000040000C000100460069006C0065004400650073006300720069007000740069006F006E0000000000470072006F007500700043006F006E00630061007400000040000F000100460069006C006500560065007200730069006F006E000000000031002E0030002E0034003100330031002E00310033003300360039000000000040001000010049006E007400650072006E0061006C004E0061006D0065000000470072006F007500700043006F006E006300610074002E0064006C006C0000004800120001004C006500670061006C0043006F007000790072006900670068007400000043006F0070007900720069006700680074002000A90020002000320030003100310000004800100001004F0072006900670069006E0061006C00460069006C0065006E0061006D0065000000470072006F007500700043006F006E006300610074002E0064006C006C00000038000C000100500072006F0064007500630074004E0061006D00650000000000470072006F007500700043006F006E00630061007400000044000F000100500072006F006400750063007400560065007200730069006F006E00000031002E0030002E0034003100330031002E00310033003300360039000000000048000F00010041007300730065006D0062006C0079002000560065007200730069006F006E00000031002E0030002E0034003100330031002E003100330033003600390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000C000000303D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    WITH PERMISSION_SET = SAFE;


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
PRINT N'Adding files to assembly [GroupConcat]';


GO
ALTER ASSEMBLY [GroupConcat]
    DROP FILE ALL
    ADD FILE FROM 0xEFBBBF7573696E672053797374656D3B0D0A7573696E672053797374656D2E446174613B0D0A7573696E672053797374656D2E446174612E53716C436C69656E743B0D0A7573696E672053797374656D2E446174612E53716C54797065733B0D0A7573696E67204D6963726F736F66742E53716C5365727665722E5365727665723B0D0A7573696E672053797374656D2E494F3B0D0A7573696E672053797374656D2E436F6C6C656374696F6E732E47656E657269633B0D0A7573696E672053797374656D2E546578743B0D0A0D0A6E616D6573706163652047726F7570436F6E6361740D0A7B0D0A202020205B53657269616C697A61626C655D0D0A202020205B53716C55736572446566696E656441676772656761746528466F726D61742E55736572446566696E65642C0D0A20202020202020202020202020202020202020202020202020202020204D61784279746553697A65203D202D312C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4E756C6C73203D20747275652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4475706C696361746573203D2066616C73652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4F72646572203D20747275652C0D0A202020202020202020202020202020202020202020202020202020202049734E756C6C4966456D707479203D2074727565295D0D0A202020207075626C6963207374727563742047524F55505F434F4E434154203A204942696E61727953657269616C697A650D0A202020207B0D0A2020202020202020707269766174652044696374696F6E6172793C737472696E672C20696E743E2076616C7565733B0D0A0D0A20202020202020207075626C696320766F696420496E697428290D0A20202020202020207B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E28293B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420416363756D756C617465285B53716C4661636574284D617853697A65203D2034303030295D2053716C537472696E672056414C5545290D0A20202020202020207B0D0A202020202020202020202020696620282156414C55452E49734E756C6C290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D2056414C55452E56616C75653B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F6964204D657267652847524F55505F434F4E4341542047726F7570290D0A20202020202020207B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E2047726F75702E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020205B72657475726E3A2053716C4661636574284D617853697A65203D202D31295D0D0A20202020202020207075626C69632053716C537472696E67205465726D696E61746528290D0A20202020202020207B0D0A20202020202020202020202069662028746869732E76616C7565732E436F756E74203E2030290D0A2020202020202020202020207B0D0A20202020202020202020202020202020537472696E674275696C6465722072657475726E537472696E67203D206E657720537472696E674275696C64657228293B0D0A20202020202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E20746869732E76616C756573290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202020202020666F722028696E74206B657973203D20303B206B657973203C206974656D2E56616C75653B206B6579732B2B290D0A20202020202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202020202072657475726E537472696E672E417070656E64286974656D2E4B6579202B20222C22293B0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020737472696E672072657475726E537472696E6732203D2072657475726E537472696E672E546F537472696E6728293B0D0A2020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67322E537562737472696E6728302C2072657475726E537472696E67322E4C656E677468202D203129293B0D0A2020202020202020202020207D0D0A0D0A20202020202020202020202072657475726E206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420526561642842696E6172795265616465722072290D0A20202020202020207B0D0A202020202020202020202020696E74206974656D436F756E74203D20722E52656164496E74333228293B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E286974656D436F756E74293B0D0A202020202020202020202020666F722028696E742069203D20303B2069203C3D206974656D436F756E74202D20313B20692B2B290D0A2020202020202020202020207B0D0A20202020202020202020202020202020746869732E76616C7565732E41646428722E52656164537472696E6728292C20722E52656164496E7433322829293B0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F69642057726974652842696E6172795772697465722077290D0A20202020202020207B0D0A202020202020202020202020772E577269746528746869732E76616C7565732E436F756E74293B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E207320696E20746869732E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020772E577269746528732E4B6579293B0D0A20202020202020202020202020202020772E577269746528732E56616C7565293B0D0A2020202020202020202020207D0D0A20202020202020207D0D0A202020207D0D0A7D AS N'GROUP_CONCAT.cs', 0xEFBBBF7573696E672053797374656D3B0D0A7573696E672053797374656D2E446174613B0D0A7573696E672053797374656D2E446174612E53716C436C69656E743B0D0A7573696E672053797374656D2E446174612E53716C54797065733B0D0A7573696E67204D6963726F736F66742E53716C5365727665722E5365727665723B0D0A7573696E672053797374656D2E494F3B0D0A7573696E672053797374656D2E436F6C6C656374696F6E732E47656E657269633B0D0A7573696E672053797374656D2E546578743B0D0A0D0A0D0A6E616D6573706163652047726F7570436F6E6361740D0A7B0D0A202020205B53657269616C697A61626C655D0D0A202020205B53716C55736572446566696E656441676772656761746528466F726D61742E55736572446566696E65642C0D0A20202020202020202020202020202020202020202020202020202020204D61784279746553697A65203D202D312C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4E756C6C73203D20747275652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4475706C696361746573203D2066616C73652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4F72646572203D20747275652C0D0A202020202020202020202020202020202020202020202020202020202049734E756C6C4966456D707479203D2074727565295D0D0A202020207075626C6963207374727563742047524F55505F434F4E4341545F44203A204942696E61727953657269616C697A650D0A202020207B0D0A2020202020202020707269766174652044696374696F6E6172793C737472696E672C20696E743E2076616C7565733B0D0A20202020202020207072697661746520737472696E672064656C696D697465723B0D0A0D0A2020202020202020707269766174652053716C537472696E672044656C696D697465720D0A20202020202020207B0D0A2020202020202020202020207365740D0A2020202020202020202020207B0D0A2020202020202020202020202020202069662028746869732E64656C696D69746572203D3D206E756C6C290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E64656C696D69746572203D2076616C75652E546F537472696E6728293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420496E697428290D0A20202020202020207B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E28293B0D0A202020202020202020202020746869732E64656C696D69746572203D206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420416363756D756C617465285B53716C4661636574284D617853697A65203D2034303030295D2053716C537472696E672056414C55452C0D0A202020202020202020202020202020202020202020202020202020202020205B53716C4661636574284D617853697A65203D2031295D2053716C537472696E672044454C494D49544552290D0A20202020202020207B0D0A202020202020202020202020696620282156414C55452E49734E756C6C290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D2056414C55452E56616C75653B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E44656C696D69746572203D2044454C494D495445523B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F6964204D657267652847524F55505F434F4E4341545F442047726F7570290D0A20202020202020207B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E2047726F75702E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020205B72657475726E3A2053716C4661636574284D617853697A65203D202D31295D0D0A20202020202020207075626C69632053716C537472696E67205465726D696E61746528290D0A20202020202020207B0D0A20202020202020202020202069662028746869732E76616C7565732E436F756E74203E2030290D0A2020202020202020202020207B0D0A20202020202020202020202020202020537472696E674275696C6465722072657475726E537472696E67203D206E657720537472696E674275696C64657228293B0D0A20202020202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E20746869732E76616C756573290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202020202020666F722028696E74206B657973203D20303B206B657973203C206974656D2E56616C75653B206B6579732B2B290D0A20202020202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202020202072657475726E537472696E672E417070656E64286974656D2E4B6579202B20746869732E64656C696D69746572293B0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020737472696E672072657475726E537472696E6732203D2072657475726E537472696E672E546F537472696E6728293B0D0A2020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67322E537562737472696E6728302C2072657475726E537472696E67322E4C656E677468202D203129293B0D0A2020202020202020202020207D0D0A0D0A20202020202020202020202072657475726E206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420526561642842696E6172795265616465722072290D0A20202020202020207B0D0A202020202020202020202020696E74206974656D436F756E74203D20722E52656164496E74333228293B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E286974656D436F756E74293B0D0A202020202020202020202020666F722028696E742069203D20303B2069203C3D206974656D436F756E74202D20313B20692B2B290D0A2020202020202020202020207B0D0A20202020202020202020202020202020746869732E76616C7565732E41646428722E52656164537472696E6728292C20722E52656164496E7433322829293B0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E64656C696D69746572203D20722E52656164537472696E6728293B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F69642057726974652842696E6172795772697465722077290D0A20202020202020207B0D0A202020202020202020202020772E577269746528746869732E76616C7565732E436F756E74293B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E207320696E20746869732E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020772E577269746528732E4B6579293B0D0A20202020202020202020202020202020772E577269746528732E56616C7565293B0D0A2020202020202020202020207D0D0A202020202020202020202020772E577269746528746869732E64656C696D69746572293B0D0A20202020202020207D0D0A202020207D0D0A7D AS N'GROUP_CONCAT_D.cs', 0xEFBBBF7573696E672053797374656D3B0D0A7573696E672053797374656D2E446174613B0D0A7573696E672053797374656D2E446174612E53716C436C69656E743B0D0A7573696E672053797374656D2E446174612E53716C54797065733B0D0A7573696E67204D6963726F736F66742E53716C5365727665722E5365727665723B0D0A7573696E672053797374656D2E494F3B0D0A7573696E672053797374656D2E436F6C6C656374696F6E732E47656E657269633B0D0A7573696E672053797374656D2E546578743B0D0A7573696E672053797374656D2E4C696E713B0D0A0D0A6E616D6573706163652047726F7570436F6E6361740D0A7B0D0A202020205B53657269616C697A61626C655D0D0A202020205B53716C55736572446566696E656441676772656761746528466F726D61742E55736572446566696E65642C0D0A20202020202020202020202020202020202020202020202020202020204D61784279746553697A65203D202D312C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4E756C6C73203D20747275652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4475706C696361746573203D2066616C73652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4F72646572203D20747275652C0D0A202020202020202020202020202020202020202020202020202020202049734E756C6C4966456D707479203D2074727565295D0D0A202020207075626C6963207374727563742047524F55505F434F4E4341545F4453203A204942696E61727953657269616C697A650D0A202020207B0D0A2020202020202020707269766174652044696374696F6E6172793C737472696E672C20696E743E2076616C7565733B0D0A20202020202020207072697661746520737472696E672064656C696D697465723B0D0A20202020202020207072697661746520737472696E6720736F727442793B0D0A0D0A2020202020202020707269766174652053716C537472696E672044656C696D697465720D0A20202020202020207B0D0A2020202020202020202020207365740D0A2020202020202020202020207B0D0A2020202020202020202020202020202069662028746869732E64656C696D69746572203D3D206E756C6C290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E64656C696D69746572203D2076616C75652E546F537472696E6728293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A2020202020202020707269766174652053716C537472696E6720536F727442790D0A20202020202020207B0D0A2020202020202020202020207365740D0A2020202020202020202020207B0D0A2020202020202020202020202020202069662028746869732E736F72744279203D3D206E756C6C290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020737472696E6720736F7274427956616C7565203D2076616C75652E546F537472696E6728292E5472696D28292E546F4C6F77657228293B0D0A202020202020202020202020202020202020202069662028737472696E672E436F6D7061726528736F7274427956616C75652C2022617363222920213D203020262620737472696E672E436F6D7061726528736F7274427956616C75652C202264657363222920213D2030290D0A20202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020207468726F77206E657720457863657074696F6E2822496E76616C696420536F727442792076616C75653A2075736520415343206F7220444553432E22293B0D0A20202020202020202020202020202020202020207D0D0A2020202020202020202020202020202020202020746869732E736F72744279203D20736F7274427956616C75653B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420496E697428290D0A20202020202020207B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E28293B0D0A202020202020202020202020746869732E64656C696D69746572203D206E756C6C3B0D0A202020202020202020202020746869732E736F72744279203D206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420416363756D756C617465285B53716C4661636574284D617853697A65203D2034303030295D2053716C537472696E672056414C55452C0D0A202020202020202020202020202020202020202020202020202020202020205B53716C4661636574284D617853697A65203D2031295D2053716C537472696E672044454C494D495445522C0D0A202020202020202020202020202020202020202020202020202020202020205B53716C4661636574284D617853697A65203D2034295D2053716C537472696E6720534F52545F4F52444552290D0A20202020202020207B0D0A202020202020202020202020696620282156414C55452E49734E756C6C290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D2056414C55452E56616C75653B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E44656C696D69746572203D2044454C494D495445523B0D0A202020202020202020202020746869732E536F72744279203D20534F52545F4F524445523B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F6964204D657267652847524F55505F434F4E4341545F44532047726F7570290D0A20202020202020207B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E2047726F75702E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020205B72657475726E3A2053716C4661636574284D617853697A65203D202D31295D0D0A20202020202020207075626C69632053716C537472696E67205465726D696E61746528290D0A20202020202020207B0D0A20202020202020202020202069662028746869732E76616C75657320213D206E756C6C20262620746869732E76616C7565732E436F756E74203E2030290D0A2020202020202020202020207B0D0A20202020202020202020202020202020537472696E674275696C6465722072657475726E537472696E674275696C646572203D206E657720537472696E674275696C64657228293B0D0A20202020202020202020202020202020737472696E672072657475726E537472696E673B0D0A0D0A20202020202020202020202020202020536F7274656444696374696F6E6172793C737472696E672C20696E743E20736F7274656456616C756573203D206E657720536F7274656444696374696F6E6172793C737472696E672C20696E743E2876616C756573293B0D0A0D0A2020202020202020202020202020202069662028737472696E672E436F6D7061726528746869732E736F727442792C2022646573632229203D3D2030290D0A202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202F2F2069746572617465206F7665722074686520536F7274656444696374696F6E61727920696E2064657363656E64696E67206F726465720D0A2020202020202020202020202020202020202020666F722028696E742069203D2028736F7274656456616C7565732E436F756E74202D2031293B2069203E3D20303B20692D2D290D0A20202020202020202020202020202020202020207B0D0A202020202020202020202020202020202020202020202020737472696E67206B6579203D2076616C7565732E456C656D656E7441742869292E4B65793B0D0A202020202020202020202020202020202020202020202020666F722028696E742076616C7565203D20303B2076616C7565203C2076616C7565732E456C656D656E7441742869292E56616C75653B2076616C75652B2B290D0A2020202020202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020202020202072657475726E537472696E674275696C6465722E417070656E64286B6579202B20746869732E64656C696D69746572293B0D0A2020202020202020202020202020202020202020202020207D0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E674275696C6465722E546F537472696E6728293B0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E672E52656D6F76652872657475726E537472696E672E4C656E677468202D20312C2031293B0D0A202020202020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67293B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202F2F2069746572617465206F7665722074686520536F7274656444696374696F6E6172790D0A2020202020202020202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E20736F7274656456616C756573290D0A20202020202020202020202020202020202020207B0D0A202020202020202020202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A202020202020202020202020202020202020202020202020666F722028696E742076616C7565203D20303B2076616C7565203C206974656D2E56616C75653B2076616C75652B2B290D0A2020202020202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020202020202072657475726E537472696E674275696C6465722E417070656E64286B6579202B20746869732E64656C696D69746572293B0D0A2020202020202020202020202020202020202020202020207D0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E674275696C6465722E546F537472696E6728293B0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E672E52656D6F76652872657475726E537472696E672E4C656E677468202D20312C2031293B0D0A202020202020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A0D0A20202020202020202020202072657475726E206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420526561642842696E6172795265616465722072290D0A20202020202020207B0D0A202020202020202020202020696E74206974656D436F756E74203D20722E52656164496E74333228293B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E286974656D436F756E74293B0D0A202020202020202020202020666F722028696E742069203D20303B2069203C3D206974656D436F756E74202D20313B20692B2B290D0A2020202020202020202020207B0D0A20202020202020202020202020202020746869732E76616C7565732E41646428722E52656164537472696E6728292C20722E52656164496E7433322829293B0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E64656C696D69746572203D20722E52656164537472696E6728293B0D0A202020202020202020202020746869732E736F72744279203D20722E52656164537472696E6728293B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F69642057726974652842696E6172795772697465722077290D0A20202020202020207B0D0A202020202020202020202020772E577269746528746869732E76616C7565732E436F756E74293B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E207320696E20746869732E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020772E577269746528732E4B6579293B0D0A20202020202020202020202020202020772E577269746528732E56616C7565293B0D0A2020202020202020202020207D0D0A202020202020202020202020772E577269746528746869732E64656C696D69746572293B0D0A202020202020202020202020772E577269746528746869732E736F72744279293B0D0A20202020202020207D0D0A202020207D0D0A7D AS N'GROUP_CONCAT_DS.cs', 0xEFBBBF7573696E672053797374656D3B0D0A7573696E672053797374656D2E446174613B0D0A7573696E672053797374656D2E446174612E53716C436C69656E743B0D0A7573696E672053797374656D2E446174612E53716C54797065733B0D0A7573696E67204D6963726F736F66742E53716C5365727665722E5365727665723B0D0A7573696E672053797374656D2E494F3B0D0A7573696E672053797374656D2E436F6C6C656374696F6E732E47656E657269633B0D0A7573696E672053797374656D2E546578743B0D0A7573696E672053797374656D2E4C696E713B0D0A0D0A6E616D6573706163652047726F7570436F6E6361740D0A7B0D0A202020205B53657269616C697A61626C655D0D0A202020205B53716C55736572446566696E656441676772656761746528466F726D61742E55736572446566696E65642C0D0A20202020202020202020202020202020202020202020202020202020204D61784279746553697A65203D202D312C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4E756C6C73203D20747275652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4475706C696361746573203D2066616C73652C0D0A20202020202020202020202020202020202020202020202020202020204973496E76617269616E74546F4F72646572203D20747275652C0D0A202020202020202020202020202020202020202020202020202020202049734E756C6C4966456D707479203D2074727565295D0D0A202020207075626C6963207374727563742047524F55505F434F4E4341545F53203A204942696E61727953657269616C697A650D0A202020207B0D0A2020202020202020707269766174652044696374696F6E6172793C737472696E672C20696E743E2076616C7565733B0D0A20202020202020207072697661746520737472696E6720736F727442793B0D0A0D0A2020202020202020707269766174652053716C537472696E6720536F727442790D0A20202020202020207B0D0A2020202020202020202020207365740D0A2020202020202020202020207B0D0A2020202020202020202020202020202069662028746869732E736F72744279203D3D206E756C6C290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020737472696E6720736F7274427956616C7565203D2076616C75652E546F537472696E6728292E5472696D28292E546F4C6F77657228293B0D0A202020202020202020202020202020202020202069662028737472696E672E436F6D7061726528736F7274427956616C75652C2022617363222920213D203020262620737472696E672E436F6D7061726528736F7274427956616C75652C202264657363222920213D2030290D0A20202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020207468726F77206E657720457863657074696F6E2822496E76616C696420536F727442792076616C75653A2075736520415343206F7220444553432E22293B0D0A20202020202020202020202020202020202020207D0D0A2020202020202020202020202020202020202020746869732E736F72744279203D20736F7274427956616C75653B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420496E697428290D0A20202020202020207B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E28293B0D0A202020202020202020202020746869732E736F72744279203D206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420416363756D756C617465285B53716C4661636574284D617853697A65203D2034303030295D2053716C537472696E672056414C55452C0D0A202020202020202020202020202020202020202020202020202020202020205B53716C4661636574284D617853697A65203D2034295D2053716C537472696E6720534F52545F4F52444552290D0A20202020202020207B0D0A202020202020202020202020696620282156414C55452E49734E756C6C290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D2056414C55452E56616C75653B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E536F72744279203D20534F52545F4F524445523B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F6964204D657267652847524F55505F434F4E4341545F532047726F7570290D0A20202020202020207B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E2047726F75702E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A2020202020202020202020202020202069662028746869732E76616C7565732E436F6E7461696E734B6579286B657929290D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565735B6B65795D202B3D20313B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020746869732E76616C7565732E416464286B65792C2031293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A20202020202020207D0D0A0D0A20202020202020205B72657475726E3A2053716C4661636574284D617853697A65203D202D31295D0D0A20202020202020207075626C69632053716C537472696E67205465726D696E61746528290D0A20202020202020207B0D0A20202020202020202020202069662028746869732E76616C75657320213D206E756C6C20262620746869732E76616C7565732E436F756E74203E2030290D0A2020202020202020202020207B0D0A20202020202020202020202020202020537472696E674275696C6465722072657475726E537472696E674275696C646572203D206E657720537472696E674275696C64657228293B0D0A20202020202020202020202020202020737472696E672072657475726E537472696E673B0D0A0D0A20202020202020202020202020202020536F7274656444696374696F6E6172793C737472696E672C20696E743E20736F7274656456616C756573203D206E657720536F7274656444696374696F6E6172793C737472696E672C20696E743E2876616C756573293B0D0A0D0A2020202020202020202020202020202069662028737472696E672E436F6D7061726528746869732E736F727442792C2022646573632229203D3D2030290D0A202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202F2F2069746572617465206F7665722074686520536F7274656444696374696F6E61727920696E2064657363656E64696E67206F726465720D0A2020202020202020202020202020202020202020666F722028696E742069203D2028736F7274656456616C7565732E436F756E74202D2031293B2069203E3D20303B20692D2D290D0A20202020202020202020202020202020202020207B0D0A202020202020202020202020202020202020202020202020737472696E67206B6579203D20736F7274656456616C7565732E456C656D656E7441742869292E4B65793B0D0A202020202020202020202020202020202020202020202020666F722028696E742076616C7565203D20303B2076616C7565203C2076616C7565732E456C656D656E7441742869292E56616C75653B2076616C75652B2B290D0A2020202020202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020202020202072657475726E537472696E674275696C6465722E417070656E64286B6579202B20222C22293B0D0A2020202020202020202020202020202020202020202020207D0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E674275696C6465722E546F537472696E6728293B0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E672E52656D6F76652872657475726E537472696E672E4C656E677468202D20312C2031293B0D0A202020202020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67293B0D0A202020202020202020202020202020207D0D0A20202020202020202020202020202020656C73650D0A202020202020202020202020202020207B0D0A20202020202020202020202020202020202020202F2F2069746572617465206F7665722074686520536F7274656444696374696F6E6172790D0A2020202020202020202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E206974656D20696E20736F7274656456616C756573290D0A20202020202020202020202020202020202020207B0D0A202020202020202020202020202020202020202020202020737472696E67206B6579203D206974656D2E4B65793B0D0A202020202020202020202020202020202020202020202020666F722028696E742076616C7565203D20303B2076616C7565203C206974656D2E56616C75653B2076616C75652B2B290D0A2020202020202020202020202020202020202020202020207B0D0A2020202020202020202020202020202020202020202020202020202072657475726E537472696E674275696C6465722E417070656E64286B6579202B20222C22293B0D0A2020202020202020202020202020202020202020202020207D0D0A20202020202020202020202020202020202020207D0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E674275696C6465722E546F537472696E6728293B0D0A202020202020202020202020202020202020202072657475726E537472696E67203D2072657475726E537472696E672E52656D6F76652872657475726E537472696E672E4C656E677468202D20312C2031293B0D0A202020202020202020202020202020202020202072657475726E206E65772053716C537472696E672872657475726E537472696E67293B0D0A202020202020202020202020202020207D0D0A2020202020202020202020207D0D0A0D0A20202020202020202020202072657475726E206E756C6C3B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F696420526561642842696E6172795265616465722072290D0A20202020202020207B0D0A202020202020202020202020696E74206974656D436F756E74203D20722E52656164496E74333228293B0D0A202020202020202020202020746869732E76616C756573203D206E65772044696374696F6E6172793C737472696E672C20696E743E286974656D436F756E74293B0D0A202020202020202020202020666F722028696E742069203D20303B2069203C3D206974656D436F756E74202D20313B20692B2B290D0A2020202020202020202020207B0D0A20202020202020202020202020202020746869732E76616C7565732E41646428722E52656164537472696E6728292C20722E52656164496E7433322829293B0D0A2020202020202020202020207D0D0A202020202020202020202020746869732E736F72744279203D20722E52656164537472696E6728293B0D0A20202020202020207D0D0A0D0A20202020202020207075626C696320766F69642057726974652842696E6172795772697465722077290D0A20202020202020207B0D0A202020202020202020202020772E577269746528746869732E76616C7565732E436F756E74293B0D0A202020202020202020202020666F726561636820284B657956616C7565506169723C737472696E672C20696E743E207320696E20746869732E76616C756573290D0A2020202020202020202020207B0D0A20202020202020202020202020202020772E577269746528732E4B6579293B0D0A20202020202020202020202020202020772E577269746528732E56616C7565293B0D0A2020202020202020202020207D0D0A202020202020202020202020772E577269746528746869732E736F72744279293B0D0A20202020202020207D0D0A202020207D0D0A7D AS N'GROUP_CONCAT_S.cs', 0xEFBBBF7573696E672053797374656D2E5265666C656374696F6E3B0D0A7573696E672053797374656D2E52756E74696D652E436F6D70696C657253657276696365733B0D0A7573696E672053797374656D2E52756E74696D652E496E7465726F7053657276696365733B0D0A7573696E672053797374656D2E446174612E53716C3B0D0A0D0A2F2F2047656E6572616C20496E666F726D6174696F6E2061626F757420616E20617373656D626C7920697320636F6E74726F6C6C6564207468726F7567682074686520666F6C6C6F77696E670D0A2F2F20736574206F6620617474726962757465732E204368616E6765207468657365206174747269627574652076616C75657320746F206D6F646966792074686520696E666F726D6174696F6E0D0A2F2F206173736F636961746564207769746820616E20617373656D626C792E0D0A5B617373656D626C793A20417373656D626C795469746C65282247726F7570436F6E63617422295D0D0A5B617373656D626C793A20417373656D626C794465736372697074696F6E2822537472696E6720636F6E636174656E6174696F6E2061676772656761746520666F722053514C205365727665722E2044726F702D696E207265706C6163656D656E7420666F72206275696C742D696E204D7953514C2047524F55505F434F4E4341542066756E74696F6E2E22295D0D0A5B617373656D626C793A20417373656D626C79436F6E66696775726174696F6E282222295D0D0A5B617373656D626C793A20417373656D626C79436F6D70616E79282222295D0D0A5B617373656D626C793A20417373656D626C7950726F64756374282247726F7570436F6E63617422295D0D0A5B617373656D626C793A20417373656D626C79436F707972696768742822436F7079726967687420C2A920203230313122295D0D0A5B617373656D626C793A20417373656D626C7954726164656D61726B282222295D0D0A5B617373656D626C793A20417373656D626C7943756C74757265282222295D0D0A0D0A5B617373656D626C793A20436F6D56697369626C652866616C7365295D0D0A0D0A2F2F0D0A2F2F2056657273696F6E20696E666F726D6174696F6E20666F7220616E20617373656D626C7920636F6E7369737473206F662074686520666F6C6C6F77696E6720666F75722076616C7565733A0D0A2F2F0D0A2F2F2020202020204D616A6F722056657273696F6E0D0A2F2F2020202020204D696E6F722056657273696F6E0D0A2F2F2020202020204275696C64204E756D6265720D0A2F2F2020202020205265766973696F6E0D0A2F2F0D0A2F2F20596F752063616E207370656369667920616C6C207468652076616C756573206F7220796F752063616E2064656661756C7420746865205265766973696F6E20616E64204275696C64204E756D626572730D0A2F2F206279207573696E672074686520272A272061732073686F776E2062656C6F773A0D0A5B617373656D626C793A20417373656D626C7956657273696F6E2822312E302E2A22295D0D0A0D0A AS N'Properties\AssemblyInfo.cs';


GO
PRINT N'Creating [dbo].[GROUP_CONCAT_D]...';


GO
CREATE AGGREGATE [dbo].[GROUP_CONCAT_D](@VALUE NVARCHAR (4000), @DELIMITER NVARCHAR (1))
    RETURNS NVARCHAR (MAX)
    EXTERNAL NAME [GroupConcat].[GroupConcat.GROUP_CONCAT_D];


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
PRINT N'Creating [dbo].[GROUP_CONCAT_S]...';


GO
CREATE AGGREGATE [dbo].[GROUP_CONCAT_S](@VALUE NVARCHAR (4000), @SORT_ORDER NVARCHAR (4))
    RETURNS NVARCHAR (MAX)
    EXTERNAL NAME [GroupConcat].[GroupConcat.GROUP_CONCAT_S];


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
PRINT N'Creating [dbo].[GROUP_CONCAT]...';


GO
CREATE AGGREGATE [dbo].[GROUP_CONCAT](@VALUE NVARCHAR (4000))
    RETURNS NVARCHAR (MAX)
    EXTERNAL NAME [GroupConcat].[GroupConcat.GROUP_CONCAT];


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
PRINT N'Creating [dbo].[GROUP_CONCAT_DS]...';


GO
CREATE AGGREGATE [dbo].[GROUP_CONCAT_DS](@VALUE NVARCHAR (4000), @DELIMITER NVARCHAR (1), @SORT_ORDER NVARCHAR (4))
    RETURNS NVARCHAR (MAX)
    EXTERNAL NAME [GroupConcat].[GroupConcat.GROUP_CONCAT_DS];


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
PRINT N'Creating [GroupConcat].[SqlAssemblyProjectRoot]...';


GO
EXECUTE sp_addextendedproperty @name = N'SqlAssemblyProjectRoot', @value = N'C:\Users\Orlando\Documents\tfs.codeplex.com\TFS12\groupconcat\Main\GroupConcat', @level0type = N'Assembly', @level0name = N'GroupConcat';


GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
DROP TABLE #tmpErrors
GO
